<?php

/**
 * 数据签名认证
 * @param  array $data 被认证的数据
 * @return string       签名
 * @author 青伢子 <qingsognzeng@163.com>
 */
function data_auth_sign($data)
{
    //数据类型检测
    if (!is_array($data)) {
        $data = (array)$data;
    }
    ksort($data); //排序
    $code = http_build_query($data); //url编码并生成query字符串
    $sign = sha1($code); //生成签名
    return $sign;
}

/**
 * 检测用户是否登录
 * @return integer 0-未登录，大于0-当前登录用户ID
 * @author 青伢子 <qingsognzeng@163.com>
 */
if (!function_exists(is_login)){
    function is_login()
    {

        $user = session('user_auth');
        if (empty($user)) {
            return 0;
        } else {
            return session('user_auth_sign') == data_auth_sign($user) ? $user['uid'] : 0;
        }
    }
}

if (!function_exists(query_user)){
    function query_user($uid){
        $user=M('user')->find($uid);
        return $user;
    }
}

/**
* 验证手机号是否正确
* @author honfei
* @param number $mobile
* @author 青伢子 <qingsognzeng@163.com>
*/
if (!function_exists(is_mobile)) {
    function is_mobile($mobile)
    {
        if (!is_numeric($mobile)) {
            return false;
        }
        return preg_match('#^13[\d]{9}$|^14[5,7]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,6,7,8]{1}\d{8}$|^18[\d]{9}$#', $mobile) ? true : false;
    }
}


/**
*验证字符长度是否在某个区间，
*$str : 表单字段接收的内容，
*$min:最小长度，
*max:最大长度，
**/
if (!function_exists(check_length)) {
    function check_length($str, $min, $max)
    {
        preg_match_all("/./u", $str, $matches);
        $len = count($matches[0]);
        if ($len < $min || $len > $max) {
            return false;
        } else {
            return true;
        }
    }
}



/**
 * 获取客户端IP地址
 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
 * @param boolean $adv 是否进行高级模式获取（有可能被伪装）
 * @return mixed
 */
if (!function_exists(get_client_ip)) {
    function get_client_ip($type = 0, $adv = false)
    {
        $type = $type ? 1 : 0;
        //static $ip  =   NULL;
        // if ($ip !== NULL) return $ip[$type];
        if ($adv) {
            if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
                $pos = array_search('unknown', $arr);
                if (false !== $pos) {
                    unset($arr[$pos]);
                }
                $ip = trim($arr[0]);
            } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
                $ip = $_SERVER['HTTP_CLIENT_IP'];
            } elseif (isset($_SERVER['REMOTE_ADDR'])) {
                $ip = $_SERVER['REMOTE_ADDR'];
            }
        } elseif (isset($_SERVER['REMOTE_ADDR'])) {
            $ip = $_SERVER['REMOTE_ADDR'];
            if ($ip == '127.0.0.1') {
                $ip = get_client_ip(0, true);
            }
        }
            // IP地址合法验证
            $long = sprintf("%u", ip2long($ip));
            $ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
            return $ip[$type];
    }
}
